package com.tx.component.generator.genmodel;

import java.util.List;

import com.tx.component.generator.util.EntityProperty;

/**
 * Controller生成模型<br/>
 * <功能详细描述>
 * 
 * @author  PengQingyang
 * @version  [版本号, 2022年10月7日]
 * @see  [相关类/方法]
 * @since  [产品/模块版本]
 */
public interface ControllerGenModel {
    
    /**
     * 所在包名(simplePackage,仅含最后一级)
     * <功能详细描述>
     * @return [参数说明]
     * 
     * @return String [返回类型说明]
     * @exception throws [异常类型] [异常说明]
     * @see [类、类#方法、类#成员]
     */
    String getBasePackage();
    
    /**
     * 实体注释<br/>
     * 如果没有添加实体的注释，则会返回实体的simpleName
     * <功能详细描述>
     * @return [参数说明]
     * 
     * @return String [返回类型说明]
     * @exception throws [异常类型] [异常说明]
     * @see [类、类#方法、类#成员]
     */
    String getEntityComment();
    
    /**
     * 实体类型name<br/>
     * <功能详细描述>
     * @return [参数说明]
     * 
     * @return String [返回类型说明]
     * @exception throws [异常类型] [异常说明]
     * @see [类、类#方法、类#成员]
     */
    String getEntityTypeName();
    
    /**
     * 实体类型simpleName<br/>
     * <功能详细描述>
     * @return [参数说明]
     * 
     * @return String [返回类型说明]
     * @exception throws [异常类型] [异常说明]
     * @see [类、类#方法、类#成员]
     */
    String getEntityTypeSimpleName();
    
    /**
     * PropertyList
     * <功能详细描述>
     * @return [参数说明]
     * 
     * @return List<EntityProperty> [返回类型说明]
     * @exception throws [异常类型] [异常说明]
     * @see [类、类#方法、类#成员]
     */
    List<EntityProperty> getPropertyList();
    
    /**
     * ViewablePropertyList
     * <功能详细描述>
     * @return [参数说明]
     * 
     * @return EntityProperty [返回类型说明]
     * @exception throws [异常类型] [异常说明]
     * @see [类、类#方法、类#成员]
     */
    List<EntityProperty> getViewablePropertyList();
    
    /**
     * 主键属性
     * <功能详细描述>
     * @return [参数说明]
     * 
     * @return EntityProperty [返回类型说明]
     * @exception throws [异常类型] [异常说明]
     * @see [类、类#方法、类#成员]
     */
    EntityProperty getPkProperty();
    
    /**
     * code属性
     * <功能详细描述>
     * @return [参数说明]
     * 
     * @return EntityProperty [返回类型说明]
     * @exception throws [异常类型] [异常说明]
     * @see [类、类#方法、类#成员]
     */
    EntityProperty getCodeProperty();
    
    /**
     * valid属性
     * <功能详细描述>
     * @return [参数说明]
     * 
     * @return EntityProperty [返回类型说明]
     * @exception throws [异常类型] [异常说明]
     * @see [类、类#方法、类#成员]
     */
    EntityProperty getValidProperty();
    
    /**
     * parent属性
     * <功能详细描述>
     * @return [参数说明]
     * 
     * @return EntityProperty [返回类型说明]
     * @exception throws [异常类型] [异常说明]
     * @see [类、类#方法、类#成员]
     */
    EntityProperty getParentProperty();
    
    /**
     * parentId属性
     * <功能详细描述>
     * @return [参数说明]
     * 
     * @return EntityProperty [返回类型说明]
     * @exception throws [异常类型] [异常说明]
     * @see [类、类#方法、类#成员]
     */
    EntityProperty getParentIdProperty();
    
    /**
     * name属性
     * <功能详细描述>
     * @return [参数说明]
     * 
     * @return EntityProperty [返回类型说明]
     * @exception throws [异常类型] [异常说明]
     * @see [类、类#方法、类#成员]
     */
    EntityProperty getNameProperty();
    
    /**
     * vcid属性
     * <功能详细描述>
     * @return [参数说明]
     * 
     * @return EntityProperty [返回类型说明]
     * @exception throws [异常类型] [异常说明]
     * @see [类、类#方法、类#成员]
     */
    EntityProperty getVcidProperty();
    
}